package src.main.BehavioralPatterns.Iterator;

import java.util.List;

// 书籍迭代器
public class BookShelfIterator implements Iterator<Book> {
    private final List<Book> books; // 引用书籍集合
    private int position = 0; // 当前遍历位置

    // 构造函数
    public BookShelfIterator(List<Book> books) {
        this.books = books;
    }

    // 检查是否有下一个元素
    @Override
    public boolean hasNext() {
        return position < books.size();
    }

    // 获取下一个元素并移动指针
    @Override
    public Book next() {
        if (!hasNext()) {
            throw new IndexOutOfBoundsException("书籍中没有更多书籍");
        }
        return books.get(position++); // 返回当前元素，然后位移
    }

    // 删除当前元素(上一个返回的元素)
    @Override
    public void remove() {
        if (position <= 0) {
            throw new IllegalStateException("调用next()后才能删除元素");
        }
        books.remove(--position); // 删除当前位置之前的元素
    }
}
